package be.ipl.finito.usecases;

import java.util.List;

import javax.ejb.Remote;

import be.ipl.finito.domaine.Jeton;
import be.ipl.finito.domaine.Joueur;
import be.ipl.finito.domaine.Participation;
import be.ipl.finito.domaine.Partie;
import be.ipl.finito.exceptions.BizException;

@Remote
public interface GestionParties {
	
	List<Jeton> getListeDeJetons();

	Partie creerPartie(Joueur joueur, String nom) throws BizException;

	Partie rejoindreUnePartie(Partie partie, Joueur joueur) throws BizException;

	Partie reprendrePartieSuspendue(Partie partie, Joueur joueur)
			throws BizException;

	boolean suspendrePartie(Partie partie) throws BizException;

	boolean supprimerPartie(Partie partie) throws BizException;

	Partie commencerTourSuivant(Partie partie) throws BizException;

	List<Partie> listerPartiesARejoindre();

	List<Partie> listerPartiesEnCours();

	List<Partie> listerPartiesARejoindre(Joueur j);

	List<Partie> listerPartiesSuspendues(Joueur j);

	void abandonnerUnePartie(Partie partie, Joueur joueur) throws BizException;

	Partie loadNewest(Partie p) throws BizException;

	Partie getPartieById(int id);

	List<Joueur> getJoueurs(Partie recherchee) throws BizException;

	Participation getParticipation(Partie partieCourante, Joueur joueur) throws BizException;

	int getNbJoueurs(Partie recherchee) throws BizException;

	Partie lancerPartie(Partie partie) throws BizException;
}
